<?php
//  @arquivo = /controller/UsuariosController.php
//  MVC : controller
//  objeto : Usuario

require_once($_SERVER['DOCUMENT_ROOT'] . '/prototipo/modelo/Usuario.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/prototipo/conexao/ConexaoBanco.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/prototipo/controle/logController.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/prototipo/modelo/Transacao.php');

class UsuariosController {
	var $conexao;
	var $usuario;
	var $arrUser = array();
	
	function __construct(){
		$this->conexao = new ConexaoBanco();
		$this->usuario = new Usuario();
		
	}
	
	function criptografar(Usuario $usuario){
		$usuarioCript = new Usuario();
		$usuarioCript = $usuario;
		
		//$usuarioCript->setEmail(sha1(md5($usuario->getEmail())));
		$usuarioCript->setSenha(sha1(md5($usuario->getSenha())));
		$usuarioCript->setLogin(sha1(md5($usuario->getLogin())));
		
		return $usuarioCript;
	}
	
	function verificaTipoUsuario($tipUsr){
		$sql = "SELECT * FROM tipo_usuario WHERE tipo_usuario.id_tipo_usuario = '$tipUsr'";
		$this->conexao->conectar();
		$res = $this->conexao->executarConsulta($sql);
		$this->conexao->desconectar();
		return $res;
		
	}
	
	function verificaExistenciaBd(Usuario $usuario){
		$sql = "SELECT * FROM usuario WHERE usuario.email like $usuario->getEmail()";
		$this->conexao->conectar();
		$res = $this->conexao->executarConsulta($sql);
		$numRows = mysql_num_rows($res);
		
		if($numRows>0){
			//usuario j� cadastrado
			return true;
		}
		else{
			//usuario n�o existe
			return false;
		}
	}
	
	function adicionar(Usuario $usuario) {
		
		/*$transacao = new Transacao();
		//$transacao->setIdTransacao(1);
		$transacao->setDescricao("Cadastro");
		$log = new LogController($transacao);		 
			*/	
		$sql = "INSERT INTO usuario (id_usuario, nome, email, login, senha, tipo_usuario_id)
				VALUES
				('',
				'".$usuario->getNome()."',
				'".$usuario->getEmail()."',
				'".$usuario->getLogin()."',
				'".$usuario->getSenha()."',
				'".$usuario->getTipoUsuarioId()->getIdTipoUsuario()."')";
		$this->conexao->conectar();
		if($this->conexao->executarSql($sql)){
			echo "Usuario Cadastrado com Sucesso!!!";
			//gravar log
			//$log->setStatus(1);//transacao efetuada com sucesso.
			$objId = mysql_insert_id();
			$user = new Usuario();
			
			//tipo do objeto ser� 1 = Usuario
			//$log->registraLog($user, $transacao,1,1, $objId);
			$this->conexao->desconectar();
			//esperar um tempo e enviar para a p�gina principal.
				
		}
		else{
			echo "N�o foi poss�vel Cadastrar o Usuario! - ERRO na execu��o SQL!";
			//gravar log de tentativa
			//$log->setStatus(0);//altera o status para 0, transacao n�o efetuada
			//grava a observa��o
			//$log->setObs("Nao foi possivel cadastrar o Usuario - Erro na execucao SQL");
		
			//$log->registraLog($usuario, $transacao,0,null);
			$this->conexao->desconectar();
		} 
			
		//$this->conexao->desconectar();
	
	}

	function editar(Usuario $usuario) {
		
		//criar instancias de log e transacao
		$transacao = new Transacao();
		$descricaoTransacao = "Update";
		$log = new LogController($transacao, $descricaoTransacao);
		
		$sqlUpdate = "UPDATE usuarios SET 
				nome = '".$usuario->getNome()."',
				email = '".$usuario->getEmail()."',
				login = '".$usuario->getLogin()."',
				senha = '".$usuario->getSenha()."',
				tipo_usuario_id = '".$usuario->getTipoUsuarioId()."' 
				WHERE id_usuario = '".$usuario->getIdUsuario()."'";
		$this->conexao->conectar();
		if($this->conexao->exercutarSql($sqlUpdate)){
			//registra status 1 -> cadastro realizado
			$log->registraLog($usuario, $transacao, 1);
			$this->conexao->desconectar();
		}
		else{
			//update com problema na execu��o sql
			$log->setStatus(0);
			
			$log->registraLog($usuario, $transacao, 0);
			$this->conexao->desconectar();
		}
	}

	function remover($usuarioId) {
		$this->conexao->conectar();
		try {
			$sql = "DELETE FROM usuarios WHERE id = ".$usuarioId;
			$this->conexao->exercutarSql($sql);
		}catch (Exception $e){
			$e->getMessage();
		}
		$this->conexao->desconectar();
	}

	/*function desativar($usuarioId) {
		$clienteDAO = new ClienteDAO();
		$clienteDAO->desativarCliente($clienteId);
	}*/

	public function loadOptions($idPreSelecionado) { // p/ montar os combos
		$indice = 0;
		$sql = "SELECT * FROM usuarios ORDER BY nome";
		
		
		$this->conexao->conecta();
		$rs = $this->conexao->executeQuery($sql);
		
		while ($row = mysql_fetch_array($rs)) {
			
			$this->usuario->setIdUsuario($row['id_usuario']);
			$this->usuario->setNome($row['nome']);
			$this->usuario->setEmail($row['email']);
			$this->usuario->setLogin($row['login']);
			$this->usuario->setSenha($row['senha']);
			$this->usuario->setTipoUsuarioId($row['tipo_usuario_id']);
			$this->arrUsers[$indice] = $this->usuario;
			$indice++;
		}
		
		$this->conexao->desconecta();
		return $this->arrUsers;
		
		
		/* este foreach pode ir na visao ou usar ajax
		foreach ($clientes as $cliente) {

			if ($idPreSelecionado == $cliente->getId()) {
				echo "<option value='.$usuario.'>getId() . "\" selected=\"selected\" >" . $cliente->getNome() . "</option> \n";
			} else {
				echo "<option $cliente-="" .="" value="\""">getId() . "\" >" . $cliente->getNome() . "</option> \n";
			}
			$conta++;
		}

		if ($conta == 0) {
			echo "<option selected="\"selected\"" value="\"0\""> cliente não encontrado "</option> \n";
		}*/
	}

	/*public function buscaOptions($busca) {
		$clienteDAO = new ClienteDAO();
		$clientes = $clienteDAO->getClientesBusca($busca);
		$conta = 0;


		foreach ($clientes as $cliente) {
			echo "<option $cliente-="" .="" value="\""">getId() . "\" >" . $cliente->getNome() . "</option> \n";
			$conta++;
		}

		if ($conta == 0) {
			echo "<option selected="\"selected\"" value="\"0\""> cliente não encontrado "</option> \n";
		}
	}*/


	public function getDadosPaginados($primeiroRegistro, $numPorPagina, $buscaUsuario) {
		$sql = "SELECT * FROM usuarios, tipo_usuario WHERE (usuarios.tipo_usuario_id = tipo_usuario.id_tipo_usuario)";
		if ($buscaUsuario != NULL) {
			$sql .= " LIKE '%".$buscaUsuario."%' ";
		}
		
		$sql .= " LIMIT ".$primeiroRegistro.",".$numPorPagina;
		
		$this->conexao->conectar();
		$rs = $this->conexao->executarConsulta($sql);
		while ($row = mysql_fetch_array($rs)) {
			$usuario = new Usuario();
			$usuario->setIdUsuario($row['id_usuario']);
			$usuario->setNome($row['nome']);
			$usuario->setEmail($row['email']);
			$usuario->setLogin($row['login']);
			$usuario->setSenha($row['senha']);
			$usuario->getTipoUsuarioId()->setIdTipoUsuario($row['tipo_usuario_id']); //preciso testar isso
			$usuario->getTipoUsuarioId()->setDescricao($row['descricao']); // preciso testar isso
			$line = array(
					'id_usuario' => $usuario->getIdUsuario(),
					'nome' => $usuario->getNome(),
					'email' => $usuario->getEmail(),
					'login' => $usuario->getLogin(),
					'senha' => $usuario->getSenha(),
					'tipo_usuario' => array(
						'id_tipo' => $usuario->getTipoUsuarioId()->getIdTipoUsuario(),
						'descricao' => $usuario->getTipoUsuarioId()->getDescricao())		
			);
			array_push($this->arrUser, $line);
		}
		$this->conexao->desconectar();
		return $this->arrUser;		
	}

	public function getTotalUsuarios($buscaUsuario) {
		$this->conexao->conectar();
		try {
			$sql = "SELECT COUNT(*) as total FROM usuarios ";
			if ($buscaUsuario != NULL) {
				$sql .= " WHERE nome LIKE '%".$buscaUsuario."%' ";
			}
			$rs = $this->conexao->executarConsulta($sql);
			$total = 0;
			while ($row = mysql_fetch_array($rs)) {
				$total = $row['total'];
			}
		} catch (Exception $e) {
			$e->getMessage();
		}
		$this->conexao->desconectar();
	}

	public function loadDados($id) {
		$this->conexao->conectar();
		try {
			$sql = "SELECT * FROM usuarios WHERE id_usuario = ".$id;
			$rs = $this->conexao->executarConsulta($sql);
			
			if ($row = mysql_fetch_array($rs)) {
				$this->usuario->setIdUsuario($row['id_usuario']);
				$this->usuario->setNome($row['nome']);
				$this->usuario->setEmail($row['email']);
				$this->usuario->setLogin($row['login']);
				$this->usuario->setSenha($row['senha']);
				$this->usuario->setTipoUsuarioId($row['tipo_usuario_id']);
			}
			return $this->usuario;
		} catch (Exception $e) {
			$e->getMessage();
		}
		$this->conexao->desconectar();
		
	}

	public function localizarReexecucoes(Usuario $usuario) {

	}

	public function getListaUsuarios() {
		$indice = 0;
		$sql = "SELECT * FROM usuarios ORDER BY nome";
		
		
		$this->conexao->conecta();
		$rs = $this->conexao->executeQuery($sql);
		
		while ($row = mysql_fetch_array($rs)) {
				
			$this->usuario->setIdUsuario($row['id_usuario']);
			$this->usuario->setNome($row['nome']);
			$this->usuario->setEmail($row['email']);
			$this->usuario->setLogin($row['login']);
			$this->usuario->setSenha($row['senha']);
			$this->usuario->setTipoUsuarioId($row['tipo_usuario_id']);
			$this->arrUsers[$indice] = $this->usuario;
			$indice++;
		}
		
		$this->conexao->desconecta();
		return $this->arrUsers;
	}

}
?>